iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
自我挑戰組

30天初探tensorflow之旅系列 第 8

Day 08 關於變數

  • 分享至 

  • xImage
  •  

變數利用 tf.Variable 類來創建,它表示張量,執行運算可以改變值,或使用特定運算可以讀取和改值。
1.創建變數,並提供初始值:

initial_value = tf.constant([[2.0, 4.0], [3.0, 5.0]])
first_variable = tf.Variable(initial_value)

在前幾天的文章中,有介紹到張量的定義方式和操作,而變數和它的操作方式十分相似,它們都是 tf.Tensor 支持的一種數據結構。所以要將上述創建好的變數資料印出來,操作如下:

print("Shape: ", first_variable.shape)
print("DType: ", first_variable.dtype)
print("Value: ", first_variable.numpy()

會輸出:

Shape:  (2, 2)
DType:  <dtype: 'float32'>
Value:  [[2. 4.]
 [3. 5.]]

2.更新變數,assign 是 tf.Variable 類的一個方法,會將新的值分配給變數。這個方法目的在於更新變數的值,不會創建新的張量,而是重用現有張量的內存。

x = tf.Variable([2.0, 3.0])
x.assign([1.0, 2.0]) 
try:
  x.assign([1.0, 2.0])
except Exception as e:
  print(f"{type(e).__name__}: {e}")
print(x.numpy())

會得到[1. 2.]。

3.放置變數,為了提高性能,TensorFlow 會嘗試將張量和變數放置在與其 dtype 兼容的最快設備上。如果有 GPU,那大部分的變數都會放置在 GPU 上。

with tf.device('CPU:0'):
  a = tf.Variable([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
  b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
  c = tf.matmul(a, b)
print(c)

可以叫出:

tf.Tensor(
[[22. 28.]
 [49. 64.]], shape=(2, 2), dtype=float32)

matmul 用於矩陣乘法的函數,它可以用於進行二維張量(矩陣)的乘法,也支持高維張量的乘法運算。


上一篇
Day 07 認識 Eager Execution
下一篇
Day 09 梯度和自動微分
系列文
30天初探tensorflow之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言